home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.4)
-
- import unittest
- import warnings
- import sys
- from test import test_support
-
- class TestSpecifics(unittest.TestCase):
-
- def test_debug_assignment(self):
- self.assertRaises(SyntaxError, compile, '__debug__ = 1', '?', 'single')
- import __builtin__
- prev = __builtin__.__debug__
- setattr(__builtin__, '__debug__', 'sure')
- setattr(__builtin__, '__debug__', prev)
-
-
- def test_argument_handling(self):
- self.assertRaises(SyntaxError, eval, 'lambda a,a:0')
- self.assertRaises(SyntaxError, eval, 'lambda a,a=1:0')
- self.assertRaises(SyntaxError, eval, 'lambda a=1,a=1:0')
-
- try:
- exec 'def f(a, a): pass'
- self.fail('duplicate arguments')
- except SyntaxError:
- pass
-
-
- try:
- exec 'def f(a = 0, a = 1): pass'
- self.fail('duplicate keyword arguments')
- except SyntaxError:
- pass
-
-
- try:
- exec 'def f(a): global a; a = 1'
- self.fail('variable is global and local')
- except SyntaxError:
- pass
-
-
-
- def test_syntax_error(self):
- self.assertRaises(SyntaxError, compile, '1+*3', 'filename', 'exec')
-
-
- def test_duplicate_global_local(self):
-
- try:
- exec 'def f(a): global a; a = 1'
- self.fail('variable is global and local')
- except SyntaxError:
- pass
-
-
-
- def test_exec_with_general_mapping_for_locals(self):
-
- class M:
- '''Test mapping interface versus possible calls from eval().'''
-
- def __getitem__(self, key):
- if key == 'a':
- return 12
-
- raise KeyError
-
-
- def __setitem__(self, key, value):
- self.results = (key, value)
-
-
- def keys(self):
- return list('xyz')
-
-
- m = M()
- g = globals()
- exec 'z = a' in g, m
- self.assertEqual(m.results, ('z', 12))
-
- try:
- exec 'z = b' in g, m
- except NameError:
- pass
-
- self.fail('Did not detect a KeyError')
- exec 'z = dir()' in g, m
- self.assertEqual(m.results, ('z', list('xyz')))
- exec 'z = globals()' in g, m
- self.assertEqual(m.results, ('z', g))
- exec 'z = locals()' in g, m
- self.assertEqual(m.results, ('z', m))
-
- try:
- exec 'z = b' in m
- except TypeError:
- pass
-
- self.fail('Did not validate globals as a real dict')
-
- class A:
- '''Non-mapping'''
- pass
-
- m = A()
-
- try:
- exec 'z = a' in g, m
- except TypeError:
- pass
-
- self.fail('Did not validate locals as a mapping')
-
- class D(dict):
-
- def __getitem__(self, key):
- if key == 'a':
- return 12
-
- return dict.__getitem__(self, key)
-
-
- d = D()
- exec 'z = a' in g, d
- self.assertEqual(d['z'], 12)
-
-
- def test_complex_args(self):
-
- def comp_args(.0):
- (a, b) = .0
- return (a, b)
-
- self.assertEqual(comp_args((1, 2)), (1, 2))
-
- def comp_args(.0 = (3, 4)):
- (a, b) = .0
- return (a, b)
-
- self.assertEqual(comp_args((1, 2)), (1, 2))
- self.assertEqual(comp_args(), (3, 4))
-
- def comp_args(a, .2):
- (b, c) = .2
- return (a, b, c)
-
- self.assertEqual(comp_args(1, (2, 3)), (1, 2, 3))
-
- def comp_args(a = 2, .4 = (3, 4)):
- (b, c) = .4
- return (a, b, c)
-
- self.assertEqual(comp_args(1, (2, 3)), (1, 2, 3))
- self.assertEqual(comp_args(), (2, 3, 4))
-
-
- def test_argument_order(self):
-
- try:
- exec 'def f(a=1, (b, c)): pass'
- self.fail('non-default args after default')
- except SyntaxError:
- pass
-
-
-
- def test_float_literals(self):
- self.assertRaises(SyntaxError, eval, '2e')
- self.assertRaises(SyntaxError, eval, '2.0e+')
- self.assertRaises(SyntaxError, eval, '1e-')
- self.assertRaises(SyntaxError, eval, '3-4e/21')
-
-
- def test_indentation(self):
- s = '\nif 1:\n if 2:\n pass'
- compile(s, '<string>', 'exec')
-
-
- def test_literals_with_leading_zeroes(self):
- for arg in [
- '077787',
- '0xj',
- '0x.',
- '0e',
- '090000000000000',
- '080000000000000',
- '000000000000009',
- '000000000000008']:
- self.assertRaises(SyntaxError, eval, arg)
-
- self.assertEqual(eval('0777'), 511)
- self.assertEqual(eval('0777L'), 511)
- self.assertEqual(eval('000777'), 511)
- self.assertEqual(eval('0xff'), 255)
- self.assertEqual(eval('0xffL'), 255)
- self.assertEqual(eval('0XfF'), 255)
- self.assertEqual(eval('0777.'), 777)
- self.assertEqual(eval('0777.0'), 777)
- self.assertEqual(eval('000000000000000000000000000000000000000000000000000777e0'), 777)
- self.assertEqual(eval('0777e1'), 7770)
- self.assertEqual(eval('0e0'), 0)
- self.assertEqual(eval('0000E-012'), 0)
- self.assertEqual(eval('09.5'), 9.5)
- self.assertEqual(eval('0777j'), (0.0+777.0j))
- self.assertEqual(eval('00j'), (0.0+0.0j))
- self.assertEqual(eval('00.0'), 0)
- self.assertEqual(eval('0e3'), 0)
- self.assertEqual(eval('090000000000000.'), 90000000000000.0)
- self.assertEqual(eval('090000000000000.0000000000000000000000'), 90000000000000.0)
- self.assertEqual(eval('090000000000000e0'), 90000000000000.0)
- self.assertEqual(eval('090000000000000e-0'), 90000000000000.0)
- self.assertEqual(eval('090000000000000j'), (0.0+90000000000000.0j))
- self.assertEqual(eval('000000000000007'), 7)
- self.assertEqual(eval('000000000000008.'), 8.0)
- self.assertEqual(eval('000000000000009.'), 9.0)
-
-
- def test_unary_minus(self):
- if sys.maxint == 2147483647:
- all_one_bits = '0xffffffff'
- self.assertEqual(eval(all_one_bits), 0xFFFFFFFFL)
- self.assertEqual(eval('-' + all_one_bits), -0xFFFFFFFFL)
- elif sys.maxint == 0x7FFFFFFFFFFFFFFFL:
- all_one_bits = '0xffffffffffffffff'
- self.assertEqual(eval(all_one_bits), 0xFFFFFFFFFFFFFFFFL)
- self.assertEqual(eval('-' + all_one_bits), -0xFFFFFFFFFFFFFFFFL)
- else:
- self.fail('How many bits *does* this machine have???')
-
-
- def test_sequence_unpacking_error(self):
- if not (1, -1):
- pass
- (i, j) = (-1, 1)
- self.assertEqual(i, 1)
- self.assertEqual(j, -1)
-
-
- def test_none_assignment(self):
- stmts = [
- 'None = 0',
- 'None += 0',
- '__builtins__.None = 0',
- 'def None(): pass',
- 'class None: pass',
- '(a, None) = 0, 0',
- 'for None in range(10): pass',
- 'def f(None): pass']
- for stmt in stmts:
- stmt += '\n'
- self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'single')
- self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec')
-
-
-
- def test_import(self):
- succeed = [
- 'import sys',
- 'import os, sys',
- 'from __future__ import nested_scopes, generators',
- 'from __future__ import (nested_scopes,\ngenerators)',
- 'from __future__ import (nested_scopes,\ngenerators,)',
- 'from sys import stdin, stderr, stdout',
- 'from sys import (stdin, stderr,\nstdout)',
- 'from sys import (stdin, stderr,\nstdout,)',
- 'from sys import (stdin\n, stderr, stdout)',
- 'from sys import (stdin\n, stderr, stdout,)',
- 'from sys import stdin as si, stdout as so, stderr as se',
- 'from sys import (stdin as si, stdout as so, stderr as se)',
- 'from sys import (stdin as si, stdout as so, stderr as se,)']
- fail = [
- 'import (os, sys)',
- 'import (os), (sys)',
- 'import ((os), (sys))',
- 'import (sys',
- 'import sys)',
- 'import (os,)',
- 'from (sys) import stdin',
- 'from __future__ import (nested_scopes',
- 'from __future__ import nested_scopes)',
- 'from __future__ import nested_scopes,\ngenerators',
- 'from sys import (stdin',
- 'from sys import stdin)',
- 'from sys import stdin, stdout,\nstderr',
- 'from sys import stdin si',
- 'from sys import stdin,from sys import (*)',
- 'from sys import (stdin,, stdout, stderr)',
- 'from sys import (stdin, stdout),']
- for stmt in succeed:
- compile(stmt, 'tmp', 'exec')
-
- for stmt in fail:
- self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec')
-
-
-
- def test_for_distinct_code_objects(self):
-
- def f():
-
- f1 = lambda x = 1: x
-
- f2 = lambda x = 2: x
- return (f1, f2)
-
- (f1, f2) = f()
- self.assertNotEqual(id(f1.func_code), id(f2.func_code))
-
-
-
- def test_main():
- test_support.run_unittest(TestSpecifics)
-
- if __name__ == '__main__':
- test_main()
-
-